8 tablespoons (1 stick) unsalted butter, plus more for dish
6 slices good white bread, crusts removed, torn into ¼- to ½-inch pieces
5 ½ cups milk
½ cup all-purpose flour
2 teaspoons salt
¼ teaspoon freshly grated nutmeg
¼ teaspoon freshly ground black pepper
¼ teaspoon cayenne pepper, or to taste
4 ½ cups grated sharp white cheddar cheese (about 18 ounces)
2 cups grated Gruyere cheese (about 8 ounces) or 1 ¼ cups grated Pecorino Romano cheese (about 5 ounces)
1 pound elbow macaroni
Heat oven to 375°F. Butter a 3-quart casserole dish; set aside. In a small saucepan over medium heat, melt 2 tablespoons butter.
Butter breadcrumbs:
Place bread in a medium bowl. Pour butter into bowl with bread, and toss. Set breadcrumbs aside.
In a medium saucepan set over medium heat, heat milk.
Melt remaining 6 tablespoons butter in a high-sided skillet over medium heat. When butter bubbles, add flour. Cook, whisking, 1 minute.
While whisking, slowly pour in hot milk. Continue cooking, whisking constantly, until the mixture bubbles and becomes thick.
Remove pan from heat. Stir in salt, nutmeg, black pepper, cayenne pepper. David note: consider a touch of turmeric for color and garlic power, mustard.
Add 3 cups cheddar cheese, and 1 1/2 cups Gruyère or 1 cup Pecorino Romano; set cheese sauce aside.
Fill a large saucepan with water; bring to a boil. Add macaroni; cook 2 to 3 minutes less than manufacturer's directions, until the outside of pasta is cooked and the inside is underdone. Transfer macaroni to a colander, rinse under cold running water, and drain well.
Undercook the macaroni: Be sure to read the instructions on the box regarding cook time because different brands of macaroni cook at different rates.
Stir macaroni into the reserved cheese sauce.
Pour mixture into prepared dish. Sprinkle remaining 1 1/2 cups cheddar cheese, 1/2 cup Gruyère or 1/4 cup Pecorino Romano, and breadcrumbs over top.
Bake until browned on top, about 30 minutes (Martha says 45-60). Transfer dish to a wire rack to cool 5 minutes; serve hot.